#ifndef CObservable_HPP
#define CObservable_HPP

// System includes
#include <vector>

// Other includes
//#include "CCommand.hpp"
#include "CObserver.hpp"

class CCommand;

class CObservable
{
public:
   /**
    * @brief Default constructor
    */
   CObservable();
   
   /**
    * @brief Destructor
    */
   ~CObservable();

   void addObserver(CObserver* o);

   void removeObserver(CObserver* o);

   void notifyObservers(const CCommand& cmd);

protected:

private:
   std::vector<CObserver*> mObserversVector;
};

#endif // CObservable_HPP